widget: Remove gtk_widget_set_redraw_on_alloc
authorTimm Bäder <mail@baedert.org>
Wed, 9 Aug 2017 14:26:26 +0000 (16:26 +0200)
committerTimm Bäder <mail@baedert.org>
Wed, 9 Aug 2017 14:26:26 +0000 (16:26 +0200)
Since gtk+ draws more than the widget and allocates more size to it than
it knows about, this flag doesn't work anymore. Removing it (or setting
it to TRUE for widgets that used to set it to FALSE) fixes drawing
invalidation when these widgets get allocated a new size.

17 files changed:
docs/reference/gtk/gtk4-sections.txt
gtk/gtkbox.c
gtk/gtkflowbox.c
gtk/gtkgrid.c
gtk/gtkheaderbar.c
gtk/gtkinfobar.c
gtk/gtklistbox.c
gtk/gtkpathbar.c
gtk/gtkrevealer.c
gtk/gtkstatusbar.c
gtk/gtktextview.c
gtk/gtktoolitemgroup.c
gtk/gtktreeview.c
gtk/gtkviewport.c
gtk/gtkwidget.c
gtk/gtkwidget.h
gtk/gtkwidgetprivate.h

index 7f21939c7b928073ca0809fda891c18311866ae2..8df123c8b912166ed3818b286a8bdd8379412c97 100644 (file)
@@ -4547,7 +4547,6 @@ gtk_widget_get_font_map
 gtk_widget_create_pango_layout
 gtk_widget_queue_draw_area
 gtk_widget_queue_draw_region
-gtk_widget_set_redraw_on_allocate
 gtk_widget_mnemonic_activate
 gtk_widget_send_focus_change
 gtk_widget_class_set_accessible_type
index 194c98ba04b34645e49eea6df597969edebb8ec0..45111edb5f55e0832d6daca3ac3f68de6530d56a 100644 (file)
@@ -1351,7 +1351,6 @@ gtk_box_init (GtkBox *box)
   private = box->priv;
 
   gtk_widget_set_has_window (GTK_WIDGET (box), FALSE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (box), FALSE);
 
   private->orientation = GTK_ORIENTATION_HORIZONTAL;
   private->children = NULL;
index dde07b7d8484a0929689e7093a6d20b41c4a3855..0119f460fddc5665a11feafcfb30466eb227e07f 100644 (file)
@@ -474,7 +474,6 @@ static void
 gtk_flow_box_child_init (GtkFlowBoxChild *child)
 {
   gtk_widget_set_can_focus (GTK_WIDGET (child), TRUE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (child), TRUE);
 }
 
 /* Public API {{{2 */
@@ -3755,7 +3754,6 @@ gtk_flow_box_init (GtkFlowBox *box)
   GtkFlowBoxPrivate *priv = BOX_PRIV (box);
 
   gtk_widget_set_has_window (GTK_WIDGET (box), FALSE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (box), TRUE);
 
   priv->orientation = GTK_ORIENTATION_HORIZONTAL;
   priv->selection_mode = GTK_SELECTION_SINGLE;
index fbd7814a51721accca4c81af73dbdf1907c20c09..73ae2eb5ff4c5a5892b316210dadc0a0b1ce0f50 100644 (file)
@@ -1727,7 +1727,6 @@ gtk_grid_init (GtkGrid *grid)
   priv = grid->priv;
 
   gtk_widget_set_has_window (GTK_WIDGET (grid), FALSE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (grid), FALSE);
 
   priv->children = NULL;
   priv->orientation = GTK_ORIENTATION_HORIZONTAL;
index e463da47dbdfb9280f054ba8d24a1577e84db37f..5b8ca74abd770ca17707e6cb0866b75a52f864f6 100644 (file)
@@ -1986,7 +1986,6 @@ gtk_header_bar_init (GtkHeaderBar *bar)
   priv = gtk_header_bar_get_instance_private (bar);
 
   gtk_widget_set_has_window (GTK_WIDGET (bar), FALSE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (bar), FALSE);
 
   priv->title = NULL;
   priv->subtitle = NULL;
index 5f29c06993f97714fe40dba03b72620c1b08cab4..6fb798ae883ccc913b10d0cceb0b1d65e86eb38a 100644 (file)
@@ -428,8 +428,6 @@ gtk_info_bar_init (GtkInfoBar *info_bar)
 
   priv = info_bar->priv = gtk_info_bar_get_instance_private (info_bar);
 
-  gtk_widget_set_redraw_on_allocate (widget, TRUE);
-
   /* message-type is a CONSTRUCT property, so we init to a value
    * different from its default to trigger its property setter
    * during construction */
index c19e01b6ad228b87ec728c8def62ccd03fb93e60..6e73276b42549603043947a971f9bc75ce7464a1 100644 (file)
@@ -592,7 +592,6 @@ gtk_list_box_init (GtkListBox *box)
   GtkWidget *widget = GTK_WIDGET (box);
 
   gtk_widget_set_has_window (widget, FALSE);
-  gtk_widget_set_redraw_on_allocate (widget, TRUE);
   priv->selection_mode = GTK_SELECTION_SINGLE;
   priv->activate_single_click = TRUE;
 
@@ -3468,7 +3467,6 @@ static void
 gtk_list_box_row_init (GtkListBoxRow *row)
 {
   gtk_widget_set_can_focus (GTK_WIDGET (row), TRUE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (row), TRUE);
 
   ROW_PRIV (row)->activatable = TRUE;
   ROW_PRIV (row)->selectable = TRUE;
index 3775505b709e51ef967e678bc639118700b7f395..4e3c37fc2ff289d79c3d414f52e04fe4dcee009b 100644 (file)
@@ -195,7 +195,6 @@ gtk_path_bar_init (GtkPathBar *path_bar)
                            G_CALLBACK (gtk_path_bar_scroll_down), path_bar);
 
   gtk_widget_set_has_window (GTK_WIDGET (path_bar), FALSE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (path_bar), FALSE);
 
   context = gtk_widget_get_style_context (GTK_WIDGET (path_bar));
   gtk_style_context_add_class (context, "path-bar");
index 05a4132ab2ec837a86622777b3e400006c3ee062..4aeffd88a498232c1ab3e1c348a0e579c08b1bed 100644 (file)
@@ -124,7 +124,6 @@ gtk_revealer_init (GtkRevealer *revealer)
   priv->target_pos = 0.0;
 
   gtk_widget_set_has_window ((GtkWidget*) revealer, FALSE);
-  gtk_widget_set_redraw_on_allocate ((GtkWidget*) revealer, FALSE);
 }
 
 static void
index 9ffca744359ed5af8b995a52f7b8f4a09ccaf604..56bf58ff39530bd689fa31966c773d318d43bd28 100644 (file)
@@ -237,7 +237,6 @@ gtk_statusbar_init (GtkStatusbar *statusbar)
   priv->keys = NULL;
 
   gtk_widget_init_template (GTK_WIDGET (statusbar));
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (statusbar), TRUE);
 }
 
 /**
index 6a5244582689a262f123f9c1382c70ed3d40b36b..4212e6d9e1944946ab72c7f66a46340705a68ae0 100644 (file)
@@ -1713,9 +1713,6 @@ gtk_text_view_init (GtkTextView *text_view)
   priv->text_window = text_window_new (GTK_TEXT_WINDOW_TEXT,
                                        widget, 200, 200);
 
-  /* We handle all our own redrawing */
-  gtk_widget_set_redraw_on_allocate (widget, FALSE);
-
   priv->multipress_gesture = gtk_gesture_multi_press_new (widget);
   gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->multipress_gesture), 0);
   g_signal_connect (priv->multipress_gesture, "pressed",
index 962e7e7e0acb4cb6033381e4e34d9cf5b49580a7..2dd49f92512e1a019924c94ad98c2f11395e4dda 100644 (file)
@@ -385,7 +385,6 @@ gtk_tool_item_group_init (GtkToolItemGroup *group)
   GtkToolItemGroupPrivate* priv;
   GtkCssNode *widget_node;
 
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (group), FALSE);
   gtk_widget_set_has_window (GTK_WIDGET (group), FALSE);
 
   group->priv = priv = gtk_tool_item_group_get_instance_private (group);
index 1ac489b14b1ebf25d17566f925b4937a9a429b92..b43f5fb9ad67c8d3affaafdd8c996290d72af873 100644 (file)
@@ -1670,7 +1670,6 @@ gtk_tree_view_init (GtkTreeView *tree_view)
   priv = tree_view->priv = gtk_tree_view_get_instance_private (tree_view);
 
   gtk_widget_set_can_focus (GTK_WIDGET (tree_view), TRUE);
-  gtk_widget_set_redraw_on_allocate (GTK_WIDGET (tree_view), FALSE);
 
   priv->show_expanders = TRUE;
   priv->draw_keyfocus = TRUE;
index 54ff2b1f4800305f1593d2e9918eecffde8f0b64..870f358981950b68078d701e07a6da68845a4a9c 100644 (file)
@@ -343,7 +343,6 @@ gtk_viewport_init (GtkViewport *viewport)
   widget = GTK_WIDGET (viewport);
 
   gtk_widget_set_has_window (widget, FALSE);
-  gtk_widget_set_redraw_on_allocate (widget, FALSE);
 
   priv->shadow_type = GTK_SHADOW_IN;
   priv->hadjustment = NULL;
index 3f72a7edc40f91f30bc8315568083871cdb982c1..ba3ce242611b71a44b2b4feae079980caba2b6d7 100644 (file)
@@ -3798,7 +3798,6 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
   priv->allocated_size_baseline = -1;
 
   priv->sensitive = TRUE;
-  priv->redraw_on_alloc = TRUE;
   priv->alloc_needed = TRUE;
   priv->alloc_needed_on_child = TRUE;
   priv->focus_on_click = TRUE;
@@ -5566,7 +5565,7 @@ check_clip:
   position_changed |= (old_clip.x != priv->clip.x ||
                       old_clip.y != priv->clip.y);
 
-  if (_gtk_widget_get_mapped (widget) && priv->redraw_on_alloc)
+  if (_gtk_widget_get_mapped (widget))
     {
       if (position_changed || size_changed || baseline_changed)
         {
@@ -8172,38 +8171,6 @@ gtk_widget_get_mapped (GtkWidget *widget)
   return widget->priv->mapped;
 }
 
-/**
- * gtk_widget_set_redraw_on_allocate:
- * @widget: a #GtkWidget
- * @redraw_on_allocate: if %TRUE, the entire widget will be redrawn
- *   when it is allocated to a new size. Otherwise, only the
- *   new portion of the widget will be redrawn.
- *
- * Sets whether the entire widget is queued for drawing when its size
- * allocation changes. By default, this setting is %TRUE and
- * the entire widget is redrawn on every size change. If your widget
- * leaves the upper left unchanged when made bigger, turning this
- * setting off will improve performance.
-
- * Note that for widgets where gtk_widget_get_has_window() is %FALSE
- * setting this flag to %FALSE turns off all allocation on resizing:
- * the widget will not even redraw if its position changes; this is to
- * allow containers that don’t draw anything to avoid excess
- * invalidations. If you set this flag on a widget with no window that
- * does draw on @widget->window, you are
- * responsible for invalidating both the old and new allocation of the
- * widget when the widget is moved and responsible for invalidating
- * regions newly when the widget increases size.
- **/
-void
-gtk_widget_set_redraw_on_allocate (GtkWidget *widget,
-                                  gboolean   redraw_on_allocate)
-{
-  g_return_if_fail (GTK_IS_WIDGET (widget));
-
-  widget->priv->redraw_on_alloc = redraw_on_allocate;
-}
-
 /**
  * gtk_widget_set_sensitive:
  * @widget: a #GtkWidget
index dea23f10e15b564446f28131ef61a3f391eb1e0f..ff2aa771baa5a168cdf70f06bb6b94a8d9f28d9f 100644 (file)
@@ -701,10 +701,6 @@ gboolean              gtk_widget_get_realized           (GtkWidget    *widget);
 GDK_AVAILABLE_IN_ALL
 gboolean              gtk_widget_get_mapped             (GtkWidget    *widget);
 
-GDK_AVAILABLE_IN_ALL
-void                  gtk_widget_set_redraw_on_allocate (GtkWidget    *widget,
-                                                        gboolean      redraw_on_allocate);
-
 GDK_AVAILABLE_IN_ALL
 void                  gtk_widget_set_parent             (GtkWidget    *widget,
                                                         GtkWidget    *parent);
index 86b020f6aeec6675aa1821b9122dc9af50f0759a..79d6437042e9ead3a85b6644a4f6ba4ce24e1fe9 100644 (file)
@@ -66,7 +66,6 @@ struct _GtkWidgetPrivate
   guint receives_default      : 1;
   guint has_grab              : 1;
   guint shadowed              : 1;
-  guint redraw_on_alloc       : 1;
   guint child_visible         : 1;
   guint multidevice           : 1;
   guint has_shape_mask        : 1;